﻿namespace Tszy.Unlimited.Data.AdoNet.Sql.Descriptors
{
    /// <summary>
    ///
    /// </summary>
    public interface IWhereMathExpressionDescriptor
    {
        /// <summary>
        /// 表达式描述器。
        /// </summary>
        WhereMathDetailExpressionDescriptor ExpressionDescriptor { get; }

        /// <summary>
        /// 单个参数表达式。
        /// </summary>
        WhereMathExpressionParameter Value { get; }
    }

    /// <summary>
    ///  统计表达式。
    /// </summary>
    public class WhereMathExpressionDescriptor : IWhereMathExpressionDescriptor
    {
        /// <summary>
        /// 表达式描述器。
        /// </summary>
        public WhereMathDetailExpressionDescriptor ExpressionDescriptor { get; set; }

        /// <summary>
        /// 单个参数表达式。
        /// </summary>
        public WhereMathExpressionParameter Value { get; set; }
    }

    /// <summary>
    ///
    /// </summary>
    public class WhereMathDetailExpressionDescriptor
    {
        /// <summary>
        /// 表达式左边。
        /// </summary>
        public IWhereMathExpressionDescriptor Left { get; set; }

        /// <summary>
        /// 表达式右边。
        /// </summary>
        public IWhereMathExpressionDescriptor Right { get; set; }

        /// <summary>
        /// 算数操作符。
        /// </summary>
        public string Tag { get; set; }
    }

    /// <summary>
    ///
    /// </summary>
    public class WhereMathExpressionParameter
    {
        /// <summary>
        /// 参数名。
        /// </summary>
        public string ParmeterName { get; set; }

        /// <summary>
        /// 操作符(+还是-)。
        /// </summary>
        public string Tag { get; set; } = "+";
    }
}